﻿//===========================[ 8 / 16 / 2011 LVI ]=============================
//				Copyright c Vitaly Lyaschenko <SkyChameleon@gmail.com>
// 								Header file
// Purpose: абстрактная игровая сущность
//=============================================================================
#pragma once

#include "mathlib.h"

static long idObj = 0;

class IAbstractObject
{
protected:
	long m_ID;       // id объекта
	bool m_isUpdate; // надо ли обновлять ?

public:
	IAbstractObject() : m_ID(0),m_isUpdate(true)
	{
		m_ID = idObj++;
	}
	virtual ~IAbstractObject() { }

	virtual void update( float ) = 0;
	bool isUpdate() const { return m_isUpdate; }
	void setIsUpdate( bool ud ) { m_isUpdate = ud; }

	virtual void setPosition( const vec3 ) { }
	virtual void setPosition( const float, const float, const float ) { }
	virtual void setRotate( const float x, const float y, const float z ) { }

	virtual mat4 getTransform()
	{
		return mat4_identity;
	}

	long getID() const { return m_ID; }
};